from datetime import timedelta

from flask_migrate import Migrate
from flask import Flask, render_template

from blueprints.index import bp as index_bp
from blueprints.user import bp as user_bp

from flask_sqlalchemy import SQLAlchemy
# from sqlalchemy import text
# 导入配置文件
import config
# config类型为模块
# print(type(config), 'type(config)')

from ext import db

app = Flask(__name__)

# 创建数据库迁移对象migrate
migrate=Migrate(app,db)

# 设置session密钥
app.secret_key = '1234567890'

# 设置配置对象
app.config.from_object(config)
# 设置sessoin过期时间
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)  # 设置会话过期时间为7天

# 初始化数据库对象, 让db数据库对象和应用进行关联,并读取应用配置中的数据库链接参数
db.init_app(app)

# 获取数据库链接对象
# with app.app_context():
#     # 获取数据库链接对象并重命名为conn方便使用
#     with db.engine.connect() as conn:
#         # 执行sql语句
#         # 注意: 不能直接将sql语句传递给execute方法 必须使用text方法, text该方法有sqlalchemy提供
#         rs = conn.execute(text("SELECT * from user"))
#         # 输出查询结果: fetchall(): 获取所有查询结果
#         print(rs.fetchall())

# 注册蓝图
app.register_blueprint(index_bp)
app.register_blueprint(user_bp)


# 定义错误处理页面,参数为http错误状态码
@app.errorhandler(404)
def not_found(error):
    data={
        "title":"404",
        "msg":"404-资源不存在"
    }
    return render_template('404.html',data=data)

# 定义应用工厂函数

def create_app(config_object):
    app=Flask(__name__)
    app.config.from_object(config_object)
    pass


if __name__ == '__main__':
    app.run()
